package com.leilei.serviceProject.domain.strategy.service;

import com.leilei.serviceProject.domain.strategy.model.valobj.StrategyAwardCountSurplusVo;

/**
 * @author yanglei
 * @description 库存扣减
 * @create 2024/12/2 9:50
 */
public interface IRaffleStock {
    /**
     * 阻塞队列获取库存对象
     *
     * @return 库存对象
     * @throws InterruptedException 当一个线程正在执行一个阻塞操作时，如果这个线程被其他线程中断了（通过调用该线程的 interrupt() 方法），
     *                              那么当前线程会抛出一个 InterruptedException 异常
     */
    StrategyAwardCountSurplusVo takeQueueValue() throws InterruptedException;

    /**
     * 更新策略奖品库存
     * @param strategyId 策略id
     * @param awardId    奖品id
     */
    void updateStrategyAwardStock(Long strategyId, Integer awardId);
}
